//! Header for the ICommand interfaceclass
#ifndef ICOMMAND_H
#define ICOMMAND_H

//! Interface for all commands
/*!
	The class/interface ICommand declares which
	functions must be implemented by concrete commands
	\class ICommand
	\author Thomas Pfeiffer
	\date 21.12.2012
*/
class ICommand {
public:

	//! DTor of the ICommand class
	/*!
	The Destructor needs to be virtul so that the destructor
	of Base-classes is being called in case we use polymorphism
	*/
	virtual ~ICommand() {};

	//! Executes the command
	/*!
	This function executes an action on the device
	which is associated with the command.
	*/
	virtual void Execute() = 0;
	
	//! Undos the last action
	/*!
	This function undos the last action on the device.
	*/
	virtual void Undo() = 0;

};

#endif